package com.code.qgjx.mapper;

import com.code.qgjx.entity.StudentJob;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface StudentJobMapper {
    
    // 插入学生岗位信息
    int insert(StudentJob studentJob);
    
    // 根据用户ID和岗位ID删除
    int deleteByUserIdAndJobId(@Param("userId") Long userId, @Param("jobPositionId") Long jobPositionId);
    
    // 更新状态
    int updateStatus(StudentJob studentJob);
    
    // 根据用户ID查询（包含岗位详细信息）
    List<Map<String, Object>> selectByUserIdWithDetails(@Param("userId") Long userId, 
                                                       @Param("start") Integer start, 
                                                       @Param("limit") Integer limit,
                                                       @Param("status") Integer status);
    
    // 根据用户ID查询总数（包含岗位详细信息）
    int selectCountByUserIdWithDetails(@Param("userId") Long userId,@Param("status") Integer status);
    
    // 根据用户ID查询
    List<StudentJob> selectByUserId(@Param("userId") Long userId);
    
    // 根据岗位ID查询
    List<StudentJob> selectByJobPositionId(@Param("jobPositionId") Long jobPositionId);
    
    // 根据用户ID和岗位ID查询
    StudentJob selectByUserIdAndJobId(@Param("userId") Long userId, @Param("jobPositionId") Long jobPositionId);
    
    // 查询所有
    List<StudentJob> selectAll();
    
    // 分页查询所有
    List<StudentJob> selectAllWithPage(@Param("start") Integer start, @Param("limit") Integer limit);
    
    // 根据用户ID分页查询
    List<StudentJob> selectByUserIdWithPage(@Param("userId") Long userId, 
                                          @Param("start") Integer start, 
                                          @Param("limit") Integer limit);
    
    // 根据岗位ID分页查询
    List<StudentJob> selectByJobPositionIdWithPage(@Param("jobPositionId") Long jobPositionId, 
                                                  @Param("start") Integer start, 
                                                  @Param("limit") Integer limit);
    
    // 根据状态分页查询
    List<StudentJob> selectByStatusWithPage(@Param("status") Integer status, 
                                          @Param("start") Integer start, 
                                          @Param("limit") Integer limit);
    
    // 查询总数
    int selectCount();
    
    // 根据用户ID查询总数
    int selectCountByUserId(@Param("userId") Long userId);
    
    // 根据岗位ID查询总数
    int selectCountByJobPositionId(@Param("jobPositionId") Long jobPositionId);
    
    // 根据状态查询总数
    int selectCountByStatus(@Param("status") Integer status);
} 